#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys

n = len(sys.argv)
if n == 1:
    print('''
类图生成帮助

参数说明:

接收一个参数为文件路径，结果为mermaid格式类图。
例: python -m class_gen a.txt

文档要求:

对于未满足以下建议的文档，本程序不保证结果正确性。
1) 文件应为英文书写。
2) 句子的分割符为英文句号或换行。
    不要把一个英文句子写成到多行里。
3) 不要对关键类使用代词。代词不会被识别为一个类。
    例如 I like reading, but this book is too boring.
    应改为 John like reading, but this book is too boring.
4) 最好不要使用缩写，简写或其他特殊符号
    例如 Mike&John 最好改成 Mike and John
5) 本程序使用读取文件采用utf-8编码，gbk编码可能会出错。

备注:

1) 可能某些标识符最后会带下划线_，这是因为和mermaid关键字冲突了。

''')
else:
    file_object = open(sys.argv[1], 'r', encoding='utf-8')
    try:
        import class_gen.core as core
        import re
        r = {}
        line = ''
        for tmp_line in file_object:
            # 预处理
            '''
            预处理没有删除停止词的原因
            是因为停止词虽然没有实际含义,
            但包含了词语之间的关系,
            所以尽可能保留。
            '''
            tmp_line = tmp_line.lower()
            tmp_line = core.abbreviation_handler(tmp_line)
            tmp_line = core.time_words_handler(tmp_line)
            # 避免奇特符号
            tmp_line = ' '.join(re.findall(r'[a-z,.()]+', tmp_line))
            line += (' '+tmp_line)
            # 去除例子,对提取类没帮助
            line = re.sub(r'\([^)]*\)', '', line)
            while line.find('.') != -1:
                i = line.find('.')+1
                core.search_classes(line[:i], r)
                line = line[i:]
                pass
        core.search_classes(line, r)
        print(core.toMermaid(r))
    finally:
        file_object.close()
